package com.ruoyi.storage.domain;

import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 出库单对象 exit_record
 *
 * @author 庞一恺
 * @date 2025-03-13
 */
public class ExitRecord extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 出库单号 */
    private Integer outId;

    /** 仓库id */
    private Integer warehouseId;

    /** 关联单号 */
    @Excel(name = "关联单号")
    private String evidenceRecordId;

    /** 出库类型 */
    @Excel(name = "出库类型")
    private String outcomeType;

    /** 出库状态 */
    @Excel(name = "出库状态")
    private String outcomeState;

    /** 出库日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出库日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date outcomeDate;

    /** 创建者 */
    private String generatedBy;

    /** 运输单号 */
    @Excel(name = "运输单号")
    private String trackingNo;

    /** 预计到达时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预计到达时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expectedDeliveryTime;

    /** 物流商编码 */
    @Excel(name = "物流商编码")
    private String deliveryCode;

    /** 物流商名称 */
    @Excel(name = "物流商名称")
    private String deliveryName;

    /** 总重量 */
    @Excel(name = "总重量")
    private Long weight;

    /** 总重量单位 */
    @Excel(name = "总重量单位")
    private String weightUnit;

    /** 运输总数 */
    @Excel(name = "运输总数")
    private Long transportQuantity;

    /** 发货地 */
    @Excel(name = "发货地")
    private String origin;

    /** 收货地 */
    @Excel(name = "收货地")
    private String destination;

    /** 运输状态 */
    @Excel(name = "运输状态")
    private String state;

    /** 计划生成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划生成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdTime;

    /** 修改日期 */
    private Date modifiedDate;

    /** 备注 */
    @Excel(name = "备注")
    private String remarks;

    /** 修改人 */
    private String modifiedBy;

    /** 出库详情信息 */
    private List<ExitDetail> exitDetailList;

    public void setOutId(Integer outId)
    {
        this.outId = outId;
    }

    public Integer getOutId()
    {
        return outId;
    }
    public void setWarehouseId(Integer warehouseId)
    {
        this.warehouseId = warehouseId;
    }

    public Integer getWarehouseId()
    {
        return warehouseId;
    }
    public void setEvidenceRecordId(String evidenceRecordId)
    {
        this.evidenceRecordId = evidenceRecordId;
    }

    public String getEvidenceRecordId()
    {
        return evidenceRecordId;
    }
    public void setOutcomeType(String outcomeType)
    {
        this.outcomeType = outcomeType;
    }

    public String getOutcomeType()
    {
        return outcomeType;
    }
    public void setOutcomeState(String outcomeState)
    {
        this.outcomeState = outcomeState;
    }

    public String getOutcomeState()
    {
        return outcomeState;
    }
    public void setOutcomeDate(Date outcomeDate)
    {
        this.outcomeDate = outcomeDate;
    }

    public Date getOutcomeDate()
    {
        return outcomeDate;
    }
    public void setGeneratedBy(String generatedBy)
    {
        this.generatedBy = generatedBy;
    }

    public String getGeneratedBy()
    {
        return generatedBy;
    }
    public void setTrackingNo(String trackingNo)
    {
        this.trackingNo = trackingNo;
    }

    public String getTrackingNo()
    {
        return trackingNo;
    }
    public void setExpectedDeliveryTime(Date expectedDeliveryTime)
    {
        this.expectedDeliveryTime = expectedDeliveryTime;
    }

    public Date getExpectedDeliveryTime()
    {
        return expectedDeliveryTime;
    }
    public void setDeliveryCode(String deliveryCode)
    {
        this.deliveryCode = deliveryCode;
    }

    public String getDeliveryCode()
    {
        return deliveryCode;
    }
    public void setDeliveryName(String deliveryName)
    {
        this.deliveryName = deliveryName;
    }

    public String getDeliveryName()
    {
        return deliveryName;
    }
    public void setWeight(Long weight)
    {
        this.weight = weight;
    }

    public Long getWeight()
    {
        return weight;
    }
    public void setWeightUnit(String weightUnit)
    {
        this.weightUnit = weightUnit;
    }

    public String getWeightUnit()
    {
        return weightUnit;
    }
    public void setTransportQuantity(Long transportQuantity)
    {
        this.transportQuantity = transportQuantity;
    }

    public Long getTransportQuantity()
    {
        return transportQuantity;
    }
    public void setOrigin(String origin)
    {
        this.origin = origin;
    }

    public String getOrigin()
    {
        return origin;
    }
    public void setDestination(String destination)
    {
        this.destination = destination;
    }

    public String getDestination()
    {
        return destination;
    }
    public void setState(String state)
    {
        this.state = state;
    }

    public String getState()
    {
        return state;
    }
    public void setCreatedTime(Date createdTime)
    {
        this.createdTime = createdTime;
    }

    public Date getCreatedTime()
    {
        return createdTime;
    }
    public void setModifiedDate(Date modifiedDate)
    {
        this.modifiedDate = modifiedDate;
    }

    public Date getModifiedDate()
    {
        return modifiedDate;
    }
    public void setRemarks(String remarks)
    {
        this.remarks = remarks;
    }

    public String getRemarks()
    {
        return remarks;
    }
    public void setModifiedBy(String modifiedBy)
    {
        this.modifiedBy = modifiedBy;
    }

    public String getModifiedBy()
    {
        return modifiedBy;
    }

    public List<ExitDetail> getExitDetailList()
    {
        if (this.exitDetailList == null) {
            this.exitDetailList = new ArrayList<>();
        }
        return exitDetailList;
    }

    public void setExitDetailList(List<ExitDetail> exitDetailList)
    {
        this.exitDetailList = exitDetailList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("outId", getOutId())
                .append("warehouseId", getWarehouseId())
                .append("evidenceRecordId", getEvidenceRecordId())
                .append("outcomeType", getOutcomeType())
                .append("outcomeState", getOutcomeState())
                .append("outcomeDate", getOutcomeDate())
                .append("generatedBy", getGeneratedBy())
                .append("trackingNo", getTrackingNo())
                .append("expectedDeliveryTime", getExpectedDeliveryTime())
                .append("deliveryCode", getDeliveryCode())
                .append("deliveryName", getDeliveryName())
                .append("weight", getWeight())
                .append("weightUnit", getWeightUnit())
                .append("transportQuantity", getTransportQuantity())
                .append("origin", getOrigin())
                .append("destination", getDestination())
                .append("state", getState())
                .append("createdTime", getCreatedTime())
                .append("modifiedDate", getModifiedDate())
                .append("remarks", getRemarks())
                .append("modifiedBy", getModifiedBy())
                .append("exitDetailList", getExitDetailList())
                .toString();
    }
}